Goto

Collaborating Authors

 functional programming


Towards Automated Formal Verification of Backend Systems with LLMs

Xu, Kangping, Luo, Yifan, Yuan, Yang, Yao, Andrew Chi-Chih

arXiv.org Artificial Intelligence

Software testing plays a critical role in ensuring that systems behave as intended. However, existing automated testing approaches struggle to match the capabilities of human engineers due to key limitations such as test locality, lack of general reliability, and business logic blindness. In this work, we propose a novel framework that leverages functional programming and type systems to translate Scala backend code into formal Lean representations. Our pipeline automatically generates theorems that specify the intended behavior of APIs and database operations, and uses LLM-based provers to verify them. When a theorem is proved, the corresponding logic is guaranteed to be correct and no further testing is needed. If the negation of a theorem is proved instead, it confirms a bug. In cases where neither can be proved, human intervention is required. We evaluate our method on realistic backend systems and find that it can formally verify over 50% of the test requirements, which suggests that half of a testing engineer's workload can be automated. Additionally, with an average cost of only $2.19 per API, LLM-based verification is significantly more cost-effective than manual testing and can be scaled easily through parallel execution. Our results indicate a promising direction for scalable, AI-powered software testing, with the potential to greatly improve engineering productivity as models continue to advance.


How to code in Python(using paradigms) - DEV Community 👩 💻👨 💻

#artificialintelligence

Programming Paradigms are the different approaches to solving computational problems through programming. In this article, we will be talking about programming Paradigms, why they're an important part of programming, the different programming paradigms that can be applied using python, and how to apply them. Before we delve into programming paradigms, it is crucial to understand the meaning of Paradigms in its basic form, unrelated to computer science, paradigms are essentially the models, guidelines or patterns by which certain objectives are achieved, analogically, they can be likened to how scaffolding serves as the basic structure for buildings. Programming Paradigms are the different styles which a program can be written in a certain programming language, they are the different ways in which code in a given programming language (like Python, Java, JavaScript, etc) can be organised. In simple words, every programming language has a special way (methodologies) in which it's code can be structured and run and these are called programming paradigms, some programming languages only support the use of one paradigm, these are called single paradigm languages while others support multiple paradigms, these are called multi paradigm languages.


Ownership of AI-Generated Code Hotly Disputed G.R. Jenkin & Associates

#artificialintelligence

Ownership of AI-Generated Code Hotly Disputed Share Search: Explore by topic FOR THE TECHNOLOGY INSIDER Topics Follow IEEE Spectrum Support IEEE Spectrum IEEE Spectrum is the flagship publication of the IEEE -- the world's largest professional organization devoted to engineering and applied sciences. Our articles, podcasts, and infographics inform our readers about developments in technology, engineering, and science. A not-for-profit organization, IEEE is the world's largest technical professional organization dedicated to advancing technology for the benefit of humanity. IEEE websites place cookies on your device to give you the best user experience. By using our websites, you agree to the placement of these cookies. To learn more, read our Privacy Policy. Enjoy more free content and benefits by creating an account Saving articles to read later requires an IEEE Spectrum account The Institute content is only available for members Downloading full PDF issues is exclusive for IEEE Members Access to Spectrum's Digital Edition is exclusive for IEEE Members Following topics is a feature exclusive for IEEE Members Adding your response to an article requires an IEEE Spectrum account Create an account to access more content and features on IEEE Spectrum, including the ability to save articles to read later, download Spectrum Collections, and participate in conversations with readers and editors. For more exclusive content and features, consider Joining IEEE . Join the world's largest professional organization devoted to engineering and applied sciences and get access to all of Spectrum's articles, archives, PDF downloads, and other benefits. Learn more Close Access Thousands of Articles -- Completely Free Create an account and get exclusive content and features: Save articles, download collections, and talk to tech insiders -- all free!


Important Software Testing Techniques That You Have To Learn

#artificialintelligence

Soon the turn of the year has arrived, bringing us the most unique technological solutions to rule over the outdated ones. One sector which is sure to see new techniques is that of software testing! New approaches to testing are being introduced in the IT industry due to the emergence of development technologies like DevOps and Agile. Therefore, the need to keep up and transform your own testing techniques according to the new ones is very important. For this reason, we have created a list of the important software testing techniques that you have to learn. The'Internet of Things is a technology that has brought with it a radical change in the way communication between multiple devices took place traditionally.


Nix – taming Unix with functional programming

#artificialintelligence

You may be aware of Nix or NixOS. Users love it for being a superior tool for building, deploying, and managing software. Yet, it is generally perceived as notoriously hard to learn. In an attempt to provide an alternative learning approach, this article discusses the Nix package manager (hereafter simply referred to as Nix) and its underlying principles in the context of the history of computing. The condensed findings presented here reflect only some of our ongoing community effort1, started this year to improve documentation and make the benefits of Nix more accessible to software developers, and eventually computer users in general.


The key to quantum computing AI applications: Flexible programming languages

#artificialintelligence

We are excited to bring Transform 2022 back in-person July 19 and virtually July 20 - 28. Join AI and data leaders for insightful talks and exciting networking opportunities. The advance of quantum computing has the promise of reshaping artificial intelligence (AI) as it's known and deployed today. This development is drastically expanding AI's enterprise and commercial outreach, perhaps even getting closer to artificial general intelligence. And there is another promise of convergence of quantum computing, AI, and programming languages into a single computational environment. The potential effects of this coalescence of capabilities are nothing short of formidable.


Top 40 COMPLETELY FREE Coursera Artificial Intelligence and Computer Science Courses

#artificialintelligence

Each of the four weeks in the course will consist of two required components. First, an interactive textbook provides Python programming challenges that arise from real biological problems. If you haven't programmed in Python before, not to worry! We provide "Just-in-Time" exercises from the Codecademy Python track (https://www.codecademy.com/learn/python). And each page in our interactive textbook has its own discussion forum, where you can interact with other learners.


Motivation

#artificialintelligence

The user experiences of functional programming languages sucks. No doubt, this is a sad but true story for most functional programming (FP) languages. I personally thought that FP languages like Haskell offers a very unified and pure programming concepts (i.e. However, Haskell syntax is a mess (take a look at the grammar), there are a lot of edge cases (e.g. Of course this problem is not only limited to Haskell, similar problems can also be found in other FP languages like Erlang, F#, OCaml etc.


DreamCoder: Growing generalizable, interpretable knowledge with wake-sleep Bayesian program learning

Ellis, Kevin, Wong, Catherine, Nye, Maxwell, Sable-Meyer, Mathias, Cary, Luc, Morales, Lucas, Hewitt, Luke, Solar-Lezama, Armando, Tenenbaum, Joshua B.

arXiv.org Artificial Intelligence

Expert problem-solving is driven by powerful languages for thinking about problems and their solutions. Acquiring expertise means learning these languages -- systems of concepts, alongside the skills to use them. We present DreamCoder, a system that learns to solve problems by writing programs. It builds expertise by creating programming languages for expressing domain concepts, together with neural networks to guide the search for programs within these languages. A ``wake-sleep'' learning algorithm alternately extends the language with new symbolic abstractions and trains the neural network on imagined and replayed problems. DreamCoder solves both classic inductive programming tasks and creative tasks such as drawing pictures and building scenes. It rediscovers the basics of modern functional programming, vector algebra and classical physics, including Newton's and Coulomb's laws. Concepts are built compositionally from those learned earlier, yielding multi-layered symbolic representations that are interpretable and transferrable to new tasks, while still growing scalably and flexibly with experience.


Functional RL with Keras and Tensorflow Eager

Robohub

In this blog post, we explore a functional paradigm for implementing reinforcement learning (RL) algorithms. The paradigm will be that developers write the numerics of their algorithm as independent, pure functions, and then use a library to compile them into policies that can be trained at scale. We share how these ideas were implemented in RLlib's policy builder API, eliminating thousands of lines of "glue" code and bringing support for Keras and TensorFlow 2.0. One of the key ideas behind functional programming is that programs can be composed largely of pure functions, i.e., functions whose outputs are entirely determined by their inputs. Here less is more: by imposing restrictions on what functions can do, we gain the ability to more easily reason about and manipulate their execution.